package cn.com.surker.lab.dao;

import cn.com.surker.lab.entity.LabExpend;
import cn.com.surker.lab.vo.LabExpendVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import java.util.List;

/**
 * <p>
 * 工控机消耗表 Mapper 接口
 * </p>
 *
 * @author admin
 * @since 2024-11-05
 */
public interface LabExpendDao extends BaseMapper<LabExpend> {

    /**
     * 查询自动总消耗
     * @param storageId 仓位id
     * @param materialId 材料ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return
     */
    Double findSumDosage(Long storageId, Long materialId, String startTime, String endTime);

    Double findCloudSumDosage(String dbCode, Long storageId, Long materialId, String startTime, String endTime);

    /**
     * 料仓消耗统计
     * @param dbCode
     * @param lineId 生产线ID
     * @param storageId 仓位ID
     * @param materialId 材料ID
     * @param startTime
     * @param endTime
     * @return
     */
    List<LabExpendVo> findStorageExpend(String dbCode, Long lineId, Long storageId, Long materialId,
                                        String startTime, String endTime, Integer materialType, Integer breedType);
	List<LabExpendVo> findStorageExpendV1(String dbCode, Long lineId, Long storageId, Long materialId,
										String startTime, String endTime, Integer materialType, Integer breedType);
	/**
	 * 查询盘消耗下的详情
	 *
	 * @param batchId
	 * @return
	 */
	List<LabExpendVo> findByBatchId(String dbCode, Long batchId);

	/**
	 * 查询材料大类消耗
	 * @param dbCode
	 * @param breedType 材料大类
	 * @return
	 */
	List<LabExpendVo> findBreedExpend(String dbCode, Integer breedType, String startTime, String endTime);

	/**
	 * 根据发货单ID查询消耗数据
	 * @param dbCode
	 * @param invoiceId
	 * @return
	 */
	List<LabExpendVo> findByInvoice(String dbCode, Long invoiceId);

	/**
	 * 根据发货单ID查询消耗数据不按多仓位处理
	 * @param dbCode
	 * @param invoiceId
	 * @return
	 */
	List<LabExpendVo> findByInvoiceV1(String dbCode, Long invoiceId);

	/**
	 * 查询任务单、发货单平均消耗用量
	 * @param dbCode
	 * @param invoiceId
	 * @param indentId
	 * @return
	 */
	List<LabExpendVo> findControlDosage(String dbCode, Long invoiceId, Long indentId);

	/**
	 * 按强度查询原材平均消耗
	 * @param dbCode
	 * @param searchVal
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	List<LabExpendVo> findStrengthDosage(String dbCode, String searchVal, Long indentId, Long lineId, String startTime, String endTime);

}
